-- lua脚本中 key1：CACHE_COUPON couponId的拼接 key2：CACHE_COUPON_USER_COUNT couponId的拼接  arg：userId
local cacheCouponInfoKey = KEYS[1]
local cacheCouponUserCountKey = KEYS[2]
local userId = ARGV[1]

-- 检查优惠券是否存在
if redis.call('EXISTS',cacheCouponInfoKey) == 0 then
    return 1
end

-- 检查库存
if tonumber(redis.call('HGET',cacheCouponInfoKey,'totalNum'))<=0 then
    return 2
end

-- 检查时间是否合适
if (tonumber(redis.call('time')[1])>tonumber(redis.call('HGET',cacheCouponInfoKey,'issueBeginTime'))) then
    return 3
end

-- 检查是否达到用户限领数量
if (redis.call('HINCRBY',cacheCouponUserCountKey,userId,1)>tonumber(redis.call('HGET',cacheCouponInfoKey,'userLimit'))) then
    -- 用户领取数量加-1
    redis.call('HINCRBY',cacheCouponUserCountKey,userId,-1)
    return 4
end

-- 优惠券库存加1
redis.call('HINCRBY',cacheCouponInfoKey,'totalNum',-1)
-- 检查成功可以进行下一步 返回成功
return 0